package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
   * @ClassName: WmsShipmentOrderMapper.java
   * @Description: TODO(这里用一句话描述这个类的作用)
   * @Author LH
   * @Date Wed Oct 18 11:12:06 GMT+08:00 2017
   */
   public interface WmsShipmentOrderMapper extends BaseDao<WmsShipmentOrder> {

   /**
    * 插入一条记录
    * @param
    * @return int
    */
    public Integer baseInsert(@Param("map") Map<String, Object> map);

   /**
    * 插入一条记录（匹配有值的字段） 用
    * @param entity 实体对象
    * @return int
    */
   public Integer baseInsertSelective(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
   public Integer baseDeleteByPrimaryKey(@Param("id") String id);

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys(@Param("list") List<String> idList);

    /**
     * 根据发运行id 删除发运明细id
     * @param idList 发运订单id
     * @return
     */
    public Integer deleteMx(@Param("list") List<String> idList);

    /**
    * 显示创建完波次以及未拣货的订单
    * @param entity 实体
    * @return List<WmsShipmentOrder>
    */
    public List<WmsShipmentOrder> listByBcAndWjh(@Param("WmsShipmentOrder") WmsShipmentOrder entity, @Param("ckid") String ckid, @Param("hzid") String hzid);

    /**
     * 分页查询
     * @param entity 实体
     * @return List<WmsShipmentOrder>
     */
    public List<WmsShipmentOrder> baseSelectPage(@Param("WmsShipmentOrder") WmsShipmentOrder entity, @Param("ckid") String ckid, @Param("hzid") String hzid);


    /**
     * 根据id查找发运订单
     * @param id
     * @return
     */
    public WmsShipmentOrder selectById(@Param("id") String id);

    /**
    * 查询（根据主键ID查询）
    * @param id 主键ID
    * @return User    yong
    */
    public WmsShipmentOrder baseSelectByPrimaryKey(@Param("id") String id);
       /**
        * 根据发运订单查询订单明细
        * @param ssfyddid 发运订单id
        *@param ssfyddid hzid 货主
        * @param ssfyddid ckid 仓库
        * @return
        */
       public List<WmsShipmentOrderDetailed> wmsShipmentOrderDetailedList(@Param("ssfyddid") String ssfyddid, @Param("hzid") String hzid, @Param("ckid") String ckid);

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys(@Param("list") List<WmsShipmentOrder> idList);

   /**
    *修改 （匹配有值的字段）
    * @param entity 主键ID列表
    * @return int             yong
    */
    public Integer baseUpdateByPrimaryKeySelective(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

       /**
        * 获取客户信息
        * @param hzid 货主id
        * @return
        */
    public List<WmsCustomerFile> getCusInfo(@Param("hzid") String hzid, @Param("ckid") String ckid, @Param("bh") String khbh);

       /**
        * 获取货主下的货品
        * @param hzid 货主id
        * @return
        */
    public List<WmsGoods> getGoodsByHzid(@Param("hzid") String hzid, @Param("ckid") String ckid, @Param("bh") String bh);

       /**
        * 获取货主下的库位
        * @param hzid
        * @param ckid
        * @return
        */
    public List<WmsLibraryPosition> getLiLibraryPosition(@Param("hzid") String hzid, @Param("ckid") String ckid, @Param("mc") String mc);

       /**
        * 获取库存
        * @param ckid
        * @return
        */
    public List<WmsStock> getWmsStock(@Param("hpid") String hpid, @Param("ckid") String ckid, @Param("hppc") String hppc);
    public List<WmsStock> getWmsStockScrq(@Param("hpid") String hpid, @Param("ckid") String ckid, @Param("scrq") String scrq);

       /**
        * 判断是都有重复的订单编号
        * @param hzid
        * @param fybh
        * @return
        */
    public Integer getCountByBh(@Param("hzid") String hzid, @Param("fybh") String fybh, @Param("ckid") String ckid);

       /**
        * 作废时修改是否有效的状态
        * @param idList 运单id
        * @return
        */
       public Integer updateSfyx(@Param("list") List<String> idList, @Param("zfr") String zfr);

       /**
        *  标记发运完成
        * @param bjr  标记人
        * @param bjyy 标记原因
        * @return
        */
       public Integer updateZt(@Param("list") List<String> idList, @Param("bjr") String bjr, @Param("bjyy") String bjyy);

       /**
        * 修改明细的状态（标记发运完成时）
        * @param ddidList 发运单id
        * @return
        */
       public Integer updateMxZt(@Param("list") List<String> ddidList);

       /**
        * 审核发运订单
        * @param idList 发运订单id
        * @return
        */
       public Integer updateShzt(@Param("list") List<String> idList, @Param("shr") String shr);

       /**
        * 客户类型为“仓库”，将在选择的仓库-此帐号货主下建立ASN订单
        * @return
        */
       public Integer insert();



       /**
        * 获取发运订单的导入配置
        * @return
        */
       public WmsOwnerShipmentorderconfig getWmsShipmentOrderConfig (@Param("hzid") String hzid);

    /**
     * 通过客户名称查找客户对象
     * @param khmc 客户名称 （每个货主下的客户名称不会重复）
     * @param hzid
     * @return
     */
        public WmsCustomerFile getCustomerFile(@Param("lxrxm") String khbh, @Param("lxrdh") String khmc, @Param("hzid") String hzid, @Param("ckid") String ckid);

    /**
     *  根据订单类型名称查找订单
     * @param ddlx 类型名称
     * @param ckid 仓库id
     * @return
     */
        public WmsOwnerOrdertype getWmsOwnerOrderType(@Param("ddlx") String ddlx, @Param("hzid") String hzid, @Param("ckid") String ckid);

    /**
     *  查询货品
     * @param bh 货品编号
     * @param ckid 仓库id
     * @return
     */
        public WmsGoods getGoods(@Param("bh") String bh, @Param("ckid") String ckid);

    /**
     * 获取选中的id的集合
     * @param idList
     * @return
     */
    public List<WmsShipmentOrder> getOrderList(@Param("list") List<String> idList);
    /**
     * 从收发类别中获取类型为“出库”的单据类型
     * @return
     */
    public List<WmsOwnerOrdertype> getPoLx(@Param("hzid") String hzid, @Param("ckid") String ckid, @Param("ddlx") String ddlx);

    /**
     *  根据id查找客户对象
     * @param id 客户id
     * @return WmsCustomerFile
     */
    public WmsCustomerFile getCusById(@Param("id") String id);

    /**
     * 获取字段对应的列名（发运主表）
     * @param hzid 货主id
     * @param ckid 仓库id
     * @return
     */
    public List<WmsColumnName> getFyColumnName(@Param("hzid") String hzid, @Param("ckid") String ckid);

    /**
     * 获取字段对应的列名（发运明细）
     * @param hzid 货主id
     * @param ckid 仓库id
     * @return
     */
    public List<WmsColumnName> getFymxColumnName(@Param("hzid") String hzid, @Param("ckid") String ckid);

    /**
     *  根据列名查找该列对应的字典
     * @param zcloumn 列名
     * @return
     */
    public List<WmsCustomDictionary> getDictionary(@Param("zcolumn") String zcloumn, @Param("hzid") String hzid, @Param("ckid") String ckid);

    /**
     * 根据货品id 查询货品库存
     * @param hpid 货品id
     * @return
     */
    public List<WmsStock> getGoodsStock(@Param("hpid") String hpid, @Param("ckid") String ckid);

    /**
     * 发运订单状态为 全部发运和部分发运状态 的 出库订单数量（查询昨日或今日）
     * @param sj  时间
     * @return
     */
    public Integer getDdsl(@Param("sj") String sj, @Param("ckid") String ckid);

    /**
     * 查询库存余量
     * @param ddid 发运订单id
     * @return
     */
    public List<WmsShipmentOrderDetailed> getStockYl(@Param("ddid") String ddid);

    /**
     * 修改发运订单的复制次数
     * @param num 复制次数
     * @param id 发运订单id
     * @return
     */
    public  int updateNum(@Param("num") Integer num, @Param("id") String id);

    /**
     * 修改借货完结状态
     * @param id 发运订单id
     * @return
     */
    public  int updateJhwjzt(@Param("id") String id);

    /**
     *   根据地址（省，市）查询线路
     * @param sheng 省
     * @param shi 市
     * @return
     */
     public List<WmsLineDetailed> getWmsLineDetailed(@Param("sheng") String sheng, @Param("shi") String shi);

    /**
     * 查询货品包含的配件货品
     * @param sshpid 所属货品id
     * @return
     */
     public List<WmsGoods> getGoodAccessories(@Param("sshpid") String sshpid, @Param("ckid") String ckid);

    /**
     *  根据名称和编码查询订单渠道
     * @param hzid 货主id
     * @param ckid 仓库id
     * @param code 编码
     * @return
     */
     public WmsOrderChannel getOrderChannel(@Param("hzid") String hzid, @Param("ckid") String ckid, @Param("code") String code);

    /**
     * 标记是否暂不发货
     * @param id 发运明细id
     * @param zbfh 暂不发货状态（0、是 1、否）
     * @return
     */
     public int updateZbfh(@Param("id") String id, @Param("zbfh") String zbfh);

    /**
     * 根据订单渠道的一级二级查询三级的id
     * @param yiji  一级
     * @param erji  二级
     * @return
     */
     public String getOrderChannelId(@Param("yiji") String yiji, @Param("erji") String erji);

    /**
     *  暂不发货导出_Jane
     * @return
     */
    public List<WmsShipmentOrder> baseSelectPageZBFH(@Param("WmsShipmentOrder") WmsShipmentOrder entity);

    /**
     * 查询当前订单下的当前货品是否已经存在，查询条数,导入用
     * @param ydid 发运订单id
     * @param bh 货品编号
     * @return
     */
    public WmsShipmentOrderDetailed getHpDetailCount(@Param("ydid") String ydid, @Param("bh") String bh, @Param("bs") String bs);


    /**
     * 修改承运商类别
     * @param idList 发运订单id
     * @return
     */
    public  int updateCyslb(@Param("list") List<String> idList, @Param("cyslb") String cyslb);


    /**
     *  查找承运商类别
     * @return
     */
    public List<WmsShipmentOrder> selectCyslb(@Param("show_cyslb") String show_cyslb);


    /**
     * 选择需要批量打印快递面单的发运订单
     * @param page
     * @param rows
     * @return
     */
    public List<WmsShipmentOrder>  selectPrintOrder(@Param("page") Integer page,@Param("rows") Integer rows,@Param("print") String print,@Param("fybh")String fybh,@Param("bcbh") String bcbh);

    /**
     * 选择需要批量打印快递面单的发运订单 的数量
     * @param print
     * @return
     */
    public  Integer  selectPrintOrderCount(@Param("print") String print,@Param("fybh")String fybh,@Param("bcbh") String bcbh);

    /**
     * 查询是否有这个订单渠道
     * @param hzid
     * @param ckid
     * @param mc
     * @return
     */
    public List<WmsOrderChannel> selectOrderChannel(@Param("hzid") String hzid, @Param("ckid") String ckid, @Param("mc") String mc, @Param("fid") String fid);
    /**
     * 查询发运订单信息
     * 导入波次使用
     * @param hzid
     * @param fybh
     * @param ckid
     * @return WmsShipmentOrder
     */
    public WmsShipmentOrder searchFydd(@Param("hzid") String hzid,@Param("fybh") String fybh,@Param("ckid") String ckid);

    /**
     * 查询波次信息
     * 导入波次使用
     * @param bcid
     * @return
     */
    public WmsWave searchBc(@Param("bcid") String bcid);

    /**
     * 发运订单组建波次
     * 导入波次使用
     * @param fybh
     * @param bcid
     * @return
     */
    public Integer updateBc(@Param("fybh") String fybh,@Param("bcid") String bcid);

    /**
     * 添加波次信息
     * @param wmsWave
     * @return
     */
    public Integer insertBc(@Param("wmsWave") WmsWave wmsWave);

    /**
     * 查询波次信息
     * @param bcbh
     * @return
     */
    public WmsWave searchWave(@Param("bcbh") String bcbh);

    /**
     * 9_19 新增承运商预修改 回显
     * @param id
     * @return
     */
    public WmsShipmentOrder getOneCys(@Param("id") String id);
}

